www.gusucode.com > VC++ 汽配销售管理系统(Access)源码程序 > VC++ 汽配销售管理系统(Access)源码程序/源码/DInput.cpp

    //Download by http://www.NewXing.com
// DInput.cpp : implementation file
//

#include "stdafx.h"
#include "qpglxt.h"
#include "DInput.h"
#include "externDllHeader.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
extern CQpglxtApp theApp;
/////////////////////////////////////////////////////////////////////////////
// CDInput dialog


CDInput::CDInput(CWnd* pParent /*=NULL*/)
	: CDialog(CDInput::IDD, pParent)
{
	//{{AFX_DATA_INIT(CDInput)
	//}}AFX_DATA_INIT
}


void CDInput::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDInput)
	DDX_Control(pDX, IDC_STASFJE, m_StaSfje);
	DDX_Control(pDX, IDC_STAWFJE, m_StaWfje);
	DDX_Control(pDX, IDC_STABLOCK, m_staBlock);
	DDX_Control(pDX, IDC_INPUT_EDTSTORE, m_EdtStore);
	DDX_Control(pDX, IDC_INPUT_STASUMNUMBER, m_StaSumNumber);
	DDX_Control(pDX, IDC_INPUT_STASUMMONEY, m_StaSumMoney);
	DDX_Control(pDX, IDC_INPUT_STASUMMONEY2, m_StaBigSumMoney);
	DDX_Control(pDX, IDC_INPUT_EDTPAY, m_EdtPay);
	DDX_Control(pDX, IDC_INPUT_EDTNOPAY, m_EdtNoPay);
	DDX_Control(pDX, IDC_INPUT_EDTGIVECHANGE, m_EdtGiveChange);
	DDX_Control(pDX, IDC_INPUT_STAID, m_StaID);
	DDX_Control(pDX, IDC_INPUT_STADATE, m_StaDate);
	DDX_Control(pDX, IDC_INPUT_BUTBOOKIN, m_ButBookIn);
	DDX_Control(pDX, IDC_INPUT_BUTUNDO, m_ButUndo);
	DDX_Control(pDX, IDC_INPUT_BUTSAVE, m_ButSave);
	DDX_Control(pDX, IDC_INPUT_BUTPRINT, m_ButPrint);
	DDX_Control(pDX, IDC_INPUT_BUTEXIT, m_ButExit);
	DDX_Control(pDX, IDC_INPUT_STAOP, m_StaOP);
	DDX_Control(pDX, IDC_INPUT_GRID, m_Grid);
	DDX_Control(pDX, IDC_INPUT_EDTPROVIDE, m_EdtProvide);
	DDX_Control(pDX, IDC_INPUT_EDTDEAR, m_EdtDear);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CDInput, CDialog)
	//{{AFX_MSG_MAP(CDInput)
	ON_WM_PAINT()
	ON_BN_CLICKED(IDC_INPUT_BUTBOOKIN, OnInputButbookin)
	ON_WM_CTLCOLOR()
	ON_BN_CLICKED(IDC_INPUT_BUTEXIT, OnInputButexit)
	ON_BN_CLICKED(IDC_INPUT_BUTSAVE, OnInputButsave)
	ON_EN_CHANGE(IDC_INPUT_EDTPAY, OnChangeInputEdtpay)
	ON_BN_CLICKED(IDC_INPUT_BUTUNDO, OnInputButundo)
	ON_BN_CLICKED(IDC_INPUT_BUTPRINT, OnInputButprint)
	ON_EN_KILLFOCUS(IDC_INPUT_EDTDEAR, OnKillfocusInputEdtdear)
	//}}AFX_MSG_MAP
	ON_MESSAGE(DIY_SETFOCUS,OnCellSetFocus)
	ON_MESSAGE(DIY_KILLFOCUS,OnCellKillFocus)

END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDInput message handlers

void CDInput::OnOK() 
{
	// TODO: Add extra validation here
	
	//CDialog::OnOK();
}

void CDInput::OnPaint() 
{
	CPaintDC pDC(this); // device context for painting
	CBitmap bit;
	CDC memDC;
	CRect rect;
	this->GetClientRect(&rect);
	if(m_Caption=="进货管理")
		bit.LoadBitmap(IDB_INPUT);
	if(m_Caption=="退货返厂管理")
		bit.LoadBitmap(IDB_BACKF);
	if(m_Caption=="销售管理")
		bit.LoadBitmap(IDB_SELL);
	if(m_Caption=="销售退货管理")
		bit.LoadBitmap(IDB_SELLBACK);
	if(m_Caption=="商品调拨管理")
		bit.LoadBitmap(IDB_DH);

	memDC.CreateCompatibleDC(&pDC);
	memDC.SelectObject(&bit);
	pDC.BitBlt(22,23,rect.Width(),rect.Height(),&memDC,0,0,SRCCOPY);
	memDC.DeleteDC();
	::DeleteObject(&bit);	
}

BOOL CDInput::OnInitDialog() 
{
	CDialog::OnInitDialog();
	this->SetWindowText(m_Caption);
	m_StaDate.SetTextColor(RGB(0,0,0));
	m_StaID.SetTextColor(RGB(0,0,0));
	CString sSQL;
	if(m_Caption!="销售管理"&&m_Caption!="销售退货管理"&&m_Caption!="商品调拨管理")
		sSQL.Format("SELECT 编号,名称,简称 FROM 往来单位信息表 WHERE 类型=0");
	else
		if(m_Caption=="商品调拨管理")
		{
			sSQL.Format("SELECT * FROM 仓库信息查询");
			this->m_staBlock.ShowWindow(SW_SHOW);
		}
		else
			sSQL.Format("SELECT 编号,名称,简称 FROM 往来单位信息表 WHERE 类型=1");
	rst.Open(sSQL,adCmdText);
	m_EdtProvide.Initialize(this->GetParent());
	m_EdtProvide.StartUpAssciation=true;
	m_EdtProvide.SetRecordset(rst);
	m_EdtProvide.SetSelectField("名称");
	m_StaOP.SetWindowText(OP);
	sSQL.Format("SELECT 编号,姓名 FROM 员工信息表");
	rst.Open(sSQL,adCmdText);
	m_EdtDear.Initialize(this->GetParent());
	m_EdtDear.SetRecordset(rst);
	m_EdtDear.SetSelectField("姓名");
	
	rst.Open("仓库信息查询");
	m_EdtStore.Initialize(this->GetParent());
	m_EdtStore.SetRecordset(rst);
	m_EdtStore.SetSelectField("名称");

	CString Fields[]={"配件名称","适用车型","规格","产地","计量单位","进货数量","价格","合计"};
	if(m_Caption=="销售管理")
	{
		Fields[5]="销售数量";
		this->m_StaSfje.SetWindowText("实收金额:");
		this->m_StaWfje.SetWindowText("未收金额:");
	}
	if(m_Caption=="退货返厂管理")
	{
		Fields[5]="退货数量";
		this->m_StaSfje.SetWindowText("实返金额:");
		this->m_StaWfje.SetWindowText("未返金额:");

	}
	if(m_Caption=="销售退货管理")
	{
		Fields[5]="退货数量";
		this->m_StaSfje.SetWindowText("实返金额:");
		this->m_StaWfje.SetWindowText("未返金额:");
	}
	if(m_Caption=="商品调拨管理")
	{
		Fields[5]="调拨数量";
		this->m_StaSfje.EnableWindow(false);
		this->m_StaWfje.EnableWindow(false);

	}
	int ColWidth[]={130,60,100,130,60,60,60,78};
	for(int m=0;m<8;m++)
	{
		m_Grid.InsertColumn(m,Fields[m]);
		m_Grid.SetColumnWidth(m,ColWidth[m]);
	}	
	m_Grid.m_Edit.Initialize(this->GetParent());

	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

BOOL CDInput::PreTranslateMessage(MSG* pMsg) 
{
	if(pMsg->hwnd==m_EdtDear.GetSafeHwnd() && pMsg->message==WM_KEYDOWN && pMsg->wParam==9)
	{
		this->m_Grid.InsertItem(0,"");
		this->m_Grid.SetRow(0);
		this->m_Grid.SetCol(0);
		this->m_Grid.BeginEdit(0,0);
		this->m_Grid.m_Edit.SetFocus();
		pMsg->wParam=VK_CONTROL ;
	}
	if(pMsg->message==WM_KEYDOWN&&pMsg->wParam==VK_ESCAPE)
	{
		pMsg->wParam=VK_CONTROL ;
		this->OnInputButexit();
	}
	return CDialog::PreTranslateMessage(pMsg);
}

void CDInput::OnInputButbookin() 
{
	CTime time;
	CString cTime,NewID;
	if(m_Caption=="进货管理")
		NewID=ado.AutoNumber("进货信息表","票号","JH",3);
	if(m_Caption=="退货返厂管理")
		NewID=ado.AutoNumber("退货返厂表","票号","RT",3);
	if(m_Caption=="销售管理")
		NewID=ado.AutoNumber("销售信息表","票号","XS",3);
	if(m_Caption=="销售退货管理")
		NewID=ado.AutoNumber("销售退货信息表","票号","XT",3);
	if(m_Caption=="商品调拨管理")
		NewID=ado.AutoNumber("调货信息表","票号","DB",3);

	NewID=NewID+"   ";
	this->m_StaID.SetWindowText(NewID);
	time=time.GetCurrentTime();
	cTime=CTimeToCString(time); 
	cTime=cTime+"    ";
	this->m_StaDate.SetWindowText(cTime);
	this->m_EdtProvide.SetFocus();
	this->Enabled(false);
	this->Clear();
}

HBRUSH CDInput::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
	HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
	
	if(pWnd==&this->m_StaDate||	pWnd==&this->m_StaID)
	{
		pDC->SetBkColor(RGB(255,255,255));
		pDC->SetTextColor(RGB(0,0,0));
	}
	// TODO: Return a different brush if the default is not desired
	return hbr;
}

void CDInput::Enabled(bool bEnabled)
{
	this->m_Grid.ReadOnly(bEnabled);
	this->m_ButBookIn.EnableWindow(bEnabled);
	if(m_Caption!="商品调拨管理")
		this->m_EdtPay.EnableWindow(!bEnabled);
	this->m_ButExit.EnableWindow(bEnabled);
	this->m_ButPrint.EnableWindow(bEnabled);
	this->m_ButSave.EnableWindow(!bEnabled);
	this->m_ButUndo.EnableWindow(!bEnabled);
}

void CDInput::OnCellSetFocus()
{
	CString sSQL, sName,sType,sSpec,sAddr;
	switch(m_Grid.GetCol())
	{
	case 0:
		m_Grid.m_Edit.NumberOnly(false);
		m_Grid.m_Edit.PopHide=false;
		m_Grid.m_Edit.EnterNumber=0;     
		m_Grid.m_Edit.ClearAll();
		rst.Open("SELECT DISTINCT 名称,简称 from 商品信息表",adCmdText);		
		m_Grid.m_Edit.StartUpAssciation=true;
		m_Grid.m_Edit.SetRecordset(rst);
		m_Grid.m_Edit.SetSelectField("名称");
		m_Grid.m_Edit.AutoPosition();
		break;
	case 1:
		m_Grid.m_Edit.NumberOnly(false);
		m_Grid.m_Edit.PopHide=false;
		m_Grid.m_Edit.EnterNumber=0;     
		m_Grid.m_Edit.ClearAll();
		sName=m_Grid.GetItemText(m_Grid.GetRow(),0);
		sSQL.Format("SELECT DISTINCT 名称,适用车型 from 商品信息查询 WHERE 名称='%s'",sName);
		rst.Open(sSQL,adCmdText);		
		m_Grid.m_Edit.StartUpAssciation=false;
		m_Grid.m_Edit.SetRecordset(rst);
		m_Grid.m_Edit.SetSelectField("适用车型");
		m_Grid.m_Edit.AutoPosition();
		break;
	case 2:
		m_Grid.m_Edit.NumberOnly(false);
		m_Grid.m_Edit.PopHide=false;
		m_Grid.m_Edit.EnterNumber=0;     
		m_Grid.m_Edit.ClearAll();
		sName=m_Grid.GetItemText(m_Grid.GetRow(),0);
		sType=m_Grid.GetItemText(m_Grid.GetRow(),1);
		sSQL.Format("SELECT DISTINCT 名称,规格 from 商品信息查询 WHERE 名称='%s' AND 适用车型='%s'",sName,sType);
		rst.Open(sSQL,adCmdText);		
		m_Grid.m_Edit.StartUpAssciation=false;
		m_Grid.m_Edit.SetRecordset(rst);
		m_Grid.m_Edit.SetSelectField("规格");
		m_Grid.m_Edit.AutoPosition();
		break;
	case 3:
		m_Grid.m_Edit.NumberOnly(false);
		m_Grid.m_Edit.PopHide=false;
		m_Grid.m_Edit.EnterNumber=0;     
		m_Grid.m_Edit.ClearAll();
		sName=m_Grid.GetItemText(m_Grid.GetRow(),0);
		sType=m_Grid.GetItemText(m_Grid.GetRow(),1);
		sSpec=m_Grid.GetItemText(m_Grid.GetRow(),2);
		sSQL.Format("SELECT DISTINCT 名称,产地 from 商品信息查询 WHERE 名称='%s' AND 适用车型='%s' AND 规格='%s'",sName,sType,sSpec);
		rst.Open(sSQL,adCmdText);		
		m_Grid.m_Edit.StartUpAssciation=false;
		m_Grid.m_Edit.SetRecordset(rst);
		m_Grid.m_Edit.SetSelectField("产地");
		m_Grid.m_Edit.AutoPosition();
		break;
	case 4:
		m_Grid.m_Edit.NumberOnly(false);
		m_Grid.m_Edit.PopHide=false;
		m_Grid.m_Edit.EnterNumber=0;     
		m_Grid.m_Edit.ClearAll();
		sName=m_Grid.GetItemText(m_Grid.GetRow(),0);
		sType=m_Grid.GetItemText(m_Grid.GetRow(),1);
		sSpec=m_Grid.GetItemText(m_Grid.GetRow(),2);
		sAddr=m_Grid.GetItemText(m_Grid.GetRow(),3);
		sSQL.Format("SELECT DISTINCT 名称,计量单位 from 商品信息查询 WHERE 名称='%s' AND 适用车型='%s' AND 规格='%s' AND 产地='%s'",sName,sType,sSpec,sAddr);
		rst.Open(sSQL,adCmdText);		
		m_Grid.m_Edit.StartUpAssciation=false;
		m_Grid.m_Edit.SetRecordset(rst);
		m_Grid.m_Edit.SetSelectField("计量单位");
		m_Grid.m_Edit.AutoPosition();
		break;
	case 5:
		m_Grid.m_Edit.PopHide=true;
		m_Grid.m_Edit.NumberOnly(true);
		m_Grid.m_Edit.HideGrid();
		break;
	case 6:
		m_Grid.m_Edit.PopHide=false;
		m_Grid.m_Edit.EnterNumber=0;     
		m_Grid.m_Edit.ClearAll();
		m_Grid.m_Edit.NumberOnly(true);
		sName=m_Grid.GetItemText(m_Grid.GetRow(),0);
		sType=m_Grid.GetItemText(m_Grid.GetRow(),1);
		sSpec=m_Grid.GetItemText(m_Grid.GetRow(),2);
		sAddr=m_Grid.GetItemText(m_Grid.GetRow(),3);
		if(m_Caption=="销售管理" || m_Caption=="销售退货管理")
			sSQL.Format("SELECT DISTINCT 名称,销售价格 as 价格 from 商品信息查询 WHERE 名称='%s' AND 适用车型='%s' AND 规格='%s' AND 产地='%s'",sName,sType,sSpec,sAddr);
		else
			sSQL.Format("SELECT DISTINCT 名称,进价 as 价格 from 商品信息查询 WHERE 名称='%s' AND 适用车型='%s' AND 规格='%s' AND 产地='%s'",sName,sType,sSpec,sAddr);
		rst.Open(sSQL,adCmdText);		
		m_Grid.m_Edit.StartUpAssciation=false;
		m_Grid.m_Edit.SetRecordset(rst);
		m_Grid.m_Edit.SetSelectField("价格");
		m_Grid.m_Edit.AutoPosition();
		m_Grid.m_Edit.ShowGrid();
		break;
	case 7:
		m_Grid.m_Edit.EnterNumber=0;
		m_Grid.m_Edit.PopHide=true;
		m_Grid.m_Edit.NumberOnly(true);
		m_Grid.m_Edit.HideGrid();
		break;
	}
}


void CDInput::OnCellKillFocus()
{
	RxRecordset rst;
	CString sNumber,sMoney,sTotal,sSumNumber,sSumMoney;
	float fTotal,fNumber,fSumNumber=0,fSumMoney=0;
	if(m_Grid.GetCol()==5)
	{
		sNumber=m_Grid.GetItemText(m_Grid.GetRow(),5);
		if(sNumber.IsEmpty())
		{
			m_Grid.m_Edit.EnterNumber=0;
			m_Grid.SetCol(5);
			m_Grid.BeginEdit(this->m_Grid.GetRow(),5);
			m_Grid.m_Edit.SetFocus();
		}
		else
		{
			if(m_Caption=="销售管理"||m_Caption=="退货返厂管理")
			{
				CString sSQL,sID,sName,sType,sSpec,sAddr,sStore;
				sName=m_Grid.GetItemText(m_Grid.GetRow(),0);
				sType=m_Grid.GetItemText(m_Grid.GetRow(),1);
				sSpec=m_Grid.GetItemText(m_Grid.GetRow(),2);
				sAddr=m_Grid.GetItemText(m_Grid.GetRow(),3);
				sSQL.Format("SELECT 编号 from 商品信息查询 WHERE 名称='%s' AND 适用车型='%s' AND 规格='%s' AND 产地='%s'",sName,sType,sSpec,sAddr);
				rst.Open(sSQL,adCmdText);
				sID=rst.GetFieldValue("编号");
				m_EdtStore.GetWindowText(sStore);
				CString sStoreID=ado.FieldToOtherField("仓库信息查询","名称",sStore,"编号",1);
				sSQL.Format("SELECT * FROM 库存信息表 WHERE 商品编号 ='%s' AND 仓库 =%s",sID,sStoreID);			
				rst.Open(sSQL,adCmdText);
				CString sStoreNumber;
				if(rst.GetRecordCount()<1)
					sStoreNumber="0";
				else
					sStoreNumber=rst.GetFieldValue("库存数量");
				if(atoi(sNumber)>atoi(sStoreNumber)|| sStoreNumber=="0")
				{
					m_Grid.SetItemText(m_Grid.GetRow(),m_Grid.GetCol(),sStoreNumber);
			
				}
			}
		}
	}
	if(m_Grid.GetCol()==6)
	{
		sNumber=m_Grid.GetItemText(m_Grid.GetRow(),5);
		sMoney=m_Grid.GetItemText(m_Grid.GetRow(),6);
		fTotal=atof(sNumber)*atof(sMoney);
		sTotal.Format("%f",fTotal);
		m_Grid.SetItemText(m_Grid.GetRow(),7,sTotal);
		for(int i=0;i<m_Grid.GetRows();i++)
		{
			sNumber=m_Grid.GetItemText(i,5);
			sMoney=m_Grid.GetItemText(i,6);
			fNumber=atof(sNumber);
			fTotal=fNumber*atof(sMoney);
			fSumNumber=fSumNumber+fNumber;
			fSumMoney=fSumMoney+fTotal;
		}
		sSumNumber.Format("%d",(int)fSumNumber);
		sSumMoney.Format("%f",fSumMoney);
		m_StaSumMoney.SetWindowText(sSumMoney);
		m_StaSumNumber.SetWindowText(sSumNumber);
		m_StaBigSumMoney.SetWindowText(MoneyToChineseCode(sSumMoney));
		this->m_EdtNoPay.SetWindowText(sSumMoney);
	}
}

void CDInput::OnInputButexit() 
{	
	CString MsgText;
	MsgText.Format("确定要退出%s模块吗?",m_Caption);

	if(MessageBox(MsgText,"系统提示",MB_OKCANCEL|MB_ICONQUESTION)!=1)	
		return;
	this->OnCancel();

}


void CDInput::OnInputButsave() 
{
	CString MsgText;
	if(m_Caption=="进货管理")
		MsgText="确定要保存此进货单吗?";
	if(m_Caption=="退货返厂管理")
		MsgText="确定要保存此退货返厂单吗?";
	if(m_Caption=="销售管理")
		MsgText="确定要保存此销售单吗?";
	if(m_Caption=="销售退货管理")
		MsgText="确定要保存此销售退货单吗?";
	if(m_Caption=="商品调拨管理")
		MsgText="确定要保存此商品调拨单吗?";


	if(MessageBox(MsgText,"系统提示",MB_OKCANCEL|MB_ICONQUESTION)!=1)
		return;	
	CString sSQL,sID,sDate,sProvide,sProvideID,sOPID,sDealWith,sDearID,sPay,sNoPay,sGiveChange,sSumMoney,sSumNumber,sStore,sStoreID;
	m_StaID.GetWindowText(sID);
	sID.TrimLeft();
	sID.TrimRight();
	m_StaDate.GetWindowText(sDate);
	sDate.TrimRight();
	m_EdtDear.GetWindowText(sDealWith);
	sDearID=ado.FieldToOtherField("员工信息表","姓名",sDealWith,"编号",1);
	m_EdtProvide.GetWindowText(sProvide);
	sProvideID=ado.FieldToOtherField("往来单位信息表","名称",sProvide,"编号",1);
	sOPID=ado.FieldToOtherField("操作员信息表","用户名",OP,"编号",1);
	m_EdtPay.GetWindowText(sPay);
	if(m_Caption!="商品调拨管理")
		if(sPay.IsEmpty())
		{
			MessageBox("还没有结款!!","系统提示",MB_OK|MB_ICONSTOP);
			m_EdtPay.SetFocus();
			return;
		}
	m_EdtNoPay.GetWindowText(sNoPay);	
	m_EdtGiveChange.GetWindowText(sGiveChange);
	m_StaSumMoney.GetWindowText(sSumMoney);
	m_StaSumNumber.GetWindowText(sSumNumber);
	m_EdtStore.GetWindowText(sStore);
	sStoreID=ado.FieldToOtherField("仓库信息表","名称",sStore,"编号",1);
	if(m_Caption=="进货管理")
	{
		//添加到进货信息表中
		sSQL.Format("INSERT INTO 进货信息表 VALUES ('%s','%s',#%s#,%s,%s,%s,%s,%s,%s,%s,%s)",sID,sProvideID,sDate,sStoreID,sSumNumber,sSumMoney,sPay,sNoPay,sGiveChange,sOPID,sDearID);
		rst.Open(sSQL,adCmdText);
		//添加到进货明细表
		CString sWare,sWareID,sSpec,sAddr,sPrice,sNumber;
		for(int i=0;i<m_Grid.GetItemCount();i++)
		{
			//名称、规格、产地三个字段才能指定唯一的商品
			sWare=this->m_Grid.GetItemText(i,0);
			sSpec=this->m_Grid.GetItemText(i,2);
			sAddr=this->m_Grid.GetItemText(i,3);
			sPrice=this->m_Grid.GetItemText(i,6);
			sNumber=this->m_Grid.GetItemText(i,5);
			if(sWare.IsEmpty())
				break;
			sSQL.Format("SELECT * FROM 商品信息表 WHERE 名称='%s' AND 规格='%s' AND 产地='%s'",sWare,sSpec,sAddr);
			rst.Open(sSQL,adCmdText);
			rst.MoveFirst();
			sWareID=rst.GetFieldValue("编号");
			sSQL.Format("INSERT INTO 进货明细表 VALUES('%s','%s',%s,%s)",sID,sWareID,sPrice,sNumber);
			rst.Open(sSQL,adCmdText);
			//更新库存信息表
			CString sStoreNumber;
			sSQL.Format("SELECT * FROM 库存信息表 WHERE 商品编号='%s' AND 仓库=%s",sWareID,sStoreID);
			rst.Open(sSQL,adCmdText);
			if(rst.GetRecordCount()<1)//没有此种商品的库存信息	
				sSQL.Format("INSERT INTO 库存信息表 VALUES('%s',%s,%s)",sWareID,sStoreID,sNumber);
			else
			{
				sStoreNumber=rst.GetFieldValue("库存数量");
				sSQL.Format("UPDATE 库存信息表 SET 库存数量=%d WHERE 商品编号='%s'AND 仓库=%s",atoi(sStoreNumber)+atoi(sNumber),sWareID,sStoreID);	
			}
			rst.Open(sSQL,adCmdText);
		}
	}
	if(m_Caption=="退货返厂管理")
	{
		//添加到退货返厂信息表中
		sSQL.Format("INSERT INTO 退货返厂表 VALUES ('%s','%s',#%s#,%s,%s,%s,%s,%s,%s,%s,%s)",sID,sProvideID,sDate,sStoreID,sSumNumber,sSumMoney,sPay,sNoPay,sGiveChange,sOPID,sDearID);
		rst.Open(sSQL,adCmdText);
		//添加到退货返厂明细表
		CString sWare,sWareID,sSpec,sAddr,sPrice,sNumber;
		for(int i=0;i<m_Grid.GetItemCount();i++)
		{
			//名称、规格、产地三个字段才能指定唯一的商品
			sWare=this->m_Grid.GetItemText(i,0);
			sSpec=this->m_Grid.GetItemText(i,2);
			sAddr=this->m_Grid.GetItemText(i,3);
			sPrice=this->m_Grid.GetItemText(i,6);
			sNumber=this->m_Grid.GetItemText(i,5);
			if(sWare.IsEmpty())
				break;
			sSQL.Format("SELECT * FROM 商品信息表 WHERE 名称='%s' AND 规格='%s' AND 产地='%s'",sWare,sSpec,sAddr);
			rst.Open(sSQL,adCmdText);
			rst.MoveFirst();
			sWareID=rst.GetFieldValue("编号");
			sSQL.Format("INSERT INTO 退货返厂明细表 VALUES('%s','%s',%s,%s)",sID,sWareID,sPrice,sNumber);
			rst.Open(sSQL,adCmdText);
			//更新库存信息表
			CString sStoreNumber;
			sSQL.Format("SELECT * FROM 库存信息表 WHERE 商品编号='%s' AND 仓库=%s",sWareID,sStoreID);
			rst.Open(sSQL,adCmdText);
			if(rst.GetRecordCount()<1)//没有此种商品的库存信息	
				sSQL.Format("INSERT INTO 库存信息表 VALUES('%s',%s,-%s)",sWareID,sStoreID,sNumber);
			else
			{
				sStoreNumber=rst.GetFieldValue("库存数量");
				sSQL.Format("UPDATE 库存信息表 SET 库存数量=%d WHERE 商品编号='%s'AND 仓库=%s",atoi(sStoreNumber)-atoi(sNumber),sWareID,sStoreID);	
			}
			rst.Open(sSQL,adCmdText);	
		}
	}
	if(m_Caption=="销售管理")
	{
		//添加到销售信息表中
		sSQL.Format("INSERT INTO 销售信息表 VALUES ('%s','%s',#%s#,%s,%s,%s,%s,%s,%s,%s,%s)",sID,sProvideID,sDate,sStoreID,sSumNumber,sSumMoney,sPay,sNoPay,sGiveChange,sOPID,sDearID);
		rst.Open(sSQL,adCmdText);
		//添加到销售明细表
		CString sWare,sWareID,sSpec,sAddr,sPrice,sNumber;
		for(int i=0;i<m_Grid.GetItemCount();i++)
		{
			//名称、规格、产地三个字段才能指定唯一的商品
			sWare=this->m_Grid.GetItemText(i,0);
			sSpec=this->m_Grid.GetItemText(i,2);
			sAddr=this->m_Grid.GetItemText(i,3);
			sPrice=this->m_Grid.GetItemText(i,6);
			sNumber=this->m_Grid.GetItemText(i,5);
			if(sWare.IsEmpty())
				break;
			sSQL.Format("SELECT * FROM 商品信息表 WHERE 名称='%s' AND 规格='%s' AND 产地='%s'",sWare,sSpec,sAddr);
			rst.Open(sSQL,adCmdText);
			rst.MoveFirst();
			sWareID=rst.GetFieldValue("编号");
			sSQL.Format("INSERT INTO 销售明细表 VALUES('%s','%s',%s,%s)",sID,sWareID,sPrice,sNumber);
			rst.Open(sSQL,adCmdText);
			//更新库存信息表
			CString sStoreNumber;
			sSQL.Format("SELECT * FROM 库存信息表 WHERE 商品编号='%s' AND 仓库=%s",sWareID,sStoreID);
			rst.Open(sSQL,adCmdText);
			if(rst.GetRecordCount()<1)//没有此种商品的库存信息	
				sSQL.Format("INSERT INTO 库存信息表 VALUES('%s',%s,-%s)",sWareID,sStoreID,sNumber);
			else
			{
				sStoreNumber=rst.GetFieldValue("库存数量");
				sSQL.Format("UPDATE 库存信息表 SET 库存数量=%d WHERE 商品编号='%s'AND 仓库=%s",atoi(sStoreNumber)-atoi(sNumber),sWareID,sStoreID);	
			}
			rst.Open(sSQL,adCmdText);
		}
	}
	if(m_Caption=="销售退货管理")
	{
		//添加到销售退货信息表中
		sSQL.Format("INSERT INTO 销售退货信息表 VALUES ('%s','%s',#%s#,%s,%s,%s,%s,%s,%s,%s,%s)",sID,sProvideID,sDate,sStoreID,sSumNumber,sSumMoney,sPay,sNoPay,sGiveChange,sOPID,sDearID);
		rst.Open(sSQL,adCmdText);
		//添加到销售退货明细表
		CString sWare,sWareID,sSpec,sAddr,sPrice,sNumber;
		for(int i=0;i<m_Grid.GetItemCount();i++)
		{
			//名称、规格、产地三个字段才能指定唯一的商品
			sWare=this->m_Grid.GetItemText(i,0);
			sSpec=this->m_Grid.GetItemText(i,2);
			sAddr=this->m_Grid.GetItemText(i,3);
			sPrice=this->m_Grid.GetItemText(i,6);
			sNumber=this->m_Grid.GetItemText(i,5);
			if(sWare.IsEmpty())
				break;
			sSQL.Format("SELECT * FROM 商品信息表 WHERE 名称='%s' AND 规格='%s' AND 产地='%s'",sWare,sSpec,sAddr);
			rst.Open(sSQL,adCmdText);
			rst.MoveFirst();
			sWareID=rst.GetFieldValue("编号");
			sSQL.Format("INSERT INTO 销售退货明细表 VALUES('%s','%s',%s,%s)",sID,sWareID,sPrice,sNumber);
			rst.Open(sSQL,adCmdText);
			//更新库存信息表
			CString sStoreNumber;
			sSQL.Format("SELECT * FROM 库存信息表 WHERE 商品编号='%s' AND 仓库=%s",sWareID,sStoreID);
			rst.Open(sSQL,adCmdText);
			if(rst.GetRecordCount()<1)//没有此种商品的库存信息	
				sSQL.Format("INSERT INTO 库存信息表 VALUES('%s',%s,%s)",sWareID,sStoreID,sNumber);
			else
			{
				sStoreNumber=rst.GetFieldValue("库存数量");
				sSQL.Format("UPDATE 库存信息表 SET 库存数量=%d WHERE 商品编号='%s'AND 仓库=%s",atoi(sStoreNumber)+atoi(sNumber),sWareID,sStoreID);	
			}
			rst.Open(sSQL,adCmdText);
		}
	}
	if(m_Caption=="商品调拨管理")
	{
		CString sYStore,sYStoreID;
		this->m_EdtProvide.GetWindowText(sYStore);
		sYStoreID=ado.FieldToOtherField("仓库信息表","名称",sYStore,"编号",1);

		//添加到调拨信息表中
		sSQL.Format("INSERT INTO 调货信息表 VALUES ('%s',%s,%s,#%s#,%s,%s,%s,%s)",sID,sYStoreID,sStoreID,sDate,sSumNumber,sSumMoney,sOPID,sDearID);
		rst.Open(sSQL,adCmdText);
		//添加到销售退货明细表
		CString sWare,sWareID,sSpec,sAddr,sPrice,sNumber;
		for(int i=0;i<m_Grid.GetItemCount();i++)
		{
			//名称、规格、产地三个字段才能指定唯一的商品
			sWare=this->m_Grid.GetItemText(i,0);
			sSpec=this->m_Grid.GetItemText(i,2);
			sAddr=this->m_Grid.GetItemText(i,3);
			sPrice=this->m_Grid.GetItemText(i,6);
			sNumber=this->m_Grid.GetItemText(i,5);
			if(sWare.IsEmpty())
				break;
			sSQL.Format("SELECT * FROM 商品信息表 WHERE 名称='%s' AND 规格='%s' AND 产地='%s'",sWare,sSpec,sAddr);
			rst.Open(sSQL,adCmdText);
			rst.MoveFirst();
			sWareID=rst.GetFieldValue("编号");
			sSQL.Format("INSERT INTO 调货明细表 VALUES('%s','%s',%s,%s)",sID,sWareID,sNumber,sPrice);
			rst.Open(sSQL,adCmdText);
			//更新库存信息表
			CString sStoreNumber;
			//将出货仓库中此种商品减去调拨数量
			sSQL.Format("SELECT * FROM 库存信息表 WHERE 商品编号='%s' AND 仓库=%s",sWareID,sYStoreID);
			rst.Open(sSQL,adCmdText);
			if(rst.GetRecordCount()<1)//没有此种商品的库存信息	
				sSQL.Format("INSERT INTO 库存信息表 VALUES('%s',%s,-%s)",sWareID,sStoreID,sNumber);
			else
			{
				sStoreNumber=rst.GetFieldValue("库存数量");
				sSQL.Format("UPDATE 库存信息表 SET 库存数量=%d WHERE 商品编号='%s'AND 仓库=%s",atoi(sStoreNumber)-atoi(sNumber),sWareID,sYStoreID);	
			}
			rst.Open(sSQL,adCmdText);
			//将收货仓库中此种商品加上调拨数量
			sSQL.Format("SELECT * FROM 库存信息表 WHERE 商品编号='%s' AND 仓库=%s",sWareID,sStoreID);
			rst.Open(sSQL,adCmdText);
			if(rst.GetRecordCount()<1)//没有此种商品的库存信息	
				sSQL.Format("INSERT INTO 库存信息表 VALUES('%s',%s,%s)",sWareID,sStoreID,sNumber);
			else
			{
				sStoreNumber=rst.GetFieldValue("库存数量");
				sSQL.Format("UPDATE 库存信息表 SET 库存数量=%d WHERE 商品编号='%s'AND 仓库=%s",atoi(sStoreNumber)+atoi(sNumber),sWareID,sStoreID);	
			}
			rst.Open(sSQL,adCmdText);

		}
	}
	this->Enabled(true);
	this->m_ButPrint.SetFocus();
}

void CDInput::OnChangeInputEdtpay() 
{
 CString sPay,sSumMoney,sMoney;
 int nMoney;
 m_EdtPay.GetWindowText(sPay);
 m_StaSumMoney.GetWindowText(sSumMoney);
	 if(atoi(sSumMoney)<atoi(sPay))
	 {
		nMoney=atoi(sPay)-atoi(sSumMoney);
		sMoney.Format("%d",nMoney);
		this->m_EdtGiveChange.SetWindowText(sMoney);
		this->m_EdtNoPay.SetWindowText("0");
	 }
	 else
	 {
		nMoney=atoi(sSumMoney)-atoi(sPay);
		sMoney.Format("%d",nMoney);
		this->m_EdtNoPay.SetWindowText(sMoney);
		this->m_EdtGiveChange.SetWindowText("0");

	 }
}

void CDInput::OnInputButundo() 
{
	if(MessageBox("确定要撤消操作吗?","系统提示",MB_OKCANCEL|MB_ICONQUESTION)!=1)
		return;	
	this->Enabled(true);
	this->m_ButBookIn.SetFocus();
}

void CDInput::Clear()
{
	this->m_EdtProvide.SetWindowText("");
	this->m_Grid.DeleteAllItems();
	if(m_Caption!="商品调拨管理")
	{
		this->m_EdtGiveChange.SetWindowText("0");
		this->m_EdtNoPay.SetWindowText("0");
		this->m_EdtPay.SetWindowText("0");
	}
	this->m_StaBigSumMoney.SetWindowText("零元");
	this->m_StaSumMoney.SetWindowText("0");
	this->m_StaSumNumber.SetWindowText("0");
}

void CDInput::OnInputButprint() 
{
	CString sID,sName,sDate,sProvide,sStore,sSumMoney,sBigMoney,sSumNumber,sDear;
	RxRecordset brst;
	brst.Open("系统设置表");
	sName=brst.GetFieldValue("公司名称");
	this->m_StaID.GetWindowText(sID);
	this->m_EdtProvide.GetWindowText(sProvide);
	this->m_StaSumMoney.GetWindowText(sSumMoney);
	this->m_StaSumNumber.GetWindowText(sSumNumber);
	this->m_StaBigSumMoney.GetWindowText(sBigMoney);
	this->m_EdtStore.GetWindowText(sStore);
	this->m_StaDate.GetWindowText(sDate);
	m_ps.DeckCaptionNumber=4;
	m_ps.MainCaptionFontSize=400;
	m_ps.DeckCaptionFontSize=180;


	if(m_Caption=="进货管理")
	{
		sName=sName+"进货单";
		m_ps.DeckCaptions[0]="进货票号:"+sID;
		m_ps.DeckCaptions[1]="进货日期:"+sDate;
		m_ps.DeckCaptions[2]="进货仓库:"+sStore;
		m_ps.DeckCaptions[3]="供应商:"+sProvide;

	}
	if(m_Caption=="退货返厂管理")
	{
		sName=sName+"退货返厂单";		
		m_ps.DeckCaptions[0]="退货票号:"+sID;
		m_ps.DeckCaptions[1]="退货日期:"+sDate;
		m_ps.DeckCaptions[2]="退货仓库:"+sStore;
		m_ps.DeckCaptions[3]="供应商:"+sProvide;
	}
	if(m_Caption=="销售管理")
	{
		sName=sName+"销售单";
		m_ps.DeckCaptions[0]="销售票号:"+sID;
		m_ps.DeckCaptions[1]="销售日期:"+sDate;
		m_ps.DeckCaptions[2]="提货仓库:"+sStore;
		m_ps.DeckCaptions[3]="客户:"+sProvide;

	}
	if(m_Caption=="销售退货管理")
	{
		sName=sName+"销售退货单";
		m_ps.DeckCaptions[0]="退货票号:"+sID;
		m_ps.DeckCaptions[1]="退货日期:"+sDate;
		m_ps.DeckCaptions[2]="收货仓库:"+sStore;
		m_ps.DeckCaptions[3]="客户:"+sProvide;
	}
	if(m_Caption=="商品调拨管理")
	{
		sName=sName+"商品调拨单";
		m_ps.DeckCaptions[0]="调拨票号:"+sID;
		m_ps.DeckCaptions[1]="调拨日期:"+sDate;
		m_ps.DeckCaptions[2]="收货仓库:"+sStore;
		m_ps.DeckCaptions[3]="出货仓库:"+sProvide;	
	}

	m_ps.MainCaption=sName;
	m_ps.Grid=&m_Grid;
	this->m_EdtDear.GetWindowText(sDear);
	m_ps.TotalNumber=4;
	m_ps.Totals[0]="合计数量:"+sSumNumber;
	m_ps.Totals[1]="合计金额(小写):"+sSumMoney;
	m_ps.Totals[2]="合计金额(大写):"+sBigMoney;
	m_ps.Totals[3]="经手人:"+sDear;

	theApp.Print();
}

void CDInput::OnKillfocusInputEdtdear() 
{
	//检查经手人是否有效
	CString sSQL,sDear;
	this->m_EdtDear.GetWindowText(sDear);
	sSQL.Format("SELECT * FROM 员工信息表 WHERE 姓名='%s'",sDear);
	RxRecordset rst;
	rst.Open(sSQL,adCmdText);
	if(rst.GetRecordCount()<0)
	{
		MessageBox("对不起!您输入的经手人有误!","系统提示",MB_OK|MB_ICONSTOP);
		this->m_EdtDear.SetFocus();	
		this->m_EdtDear.SetWindowText("");

	}


}